package com.mashuai.utils.toolkit.inter;

import com.mashuai.utils.toolkit.achieve.MsExegesis;
import com.mashuai.utils.toolkit.core.msHandlebean.dto.MsDictDto;
import java.util.List;
import java.util.Map;

/**
 * 由于每个项目中，使用的字典处理方式都不一致，凡是用到字典映射的都需要去实现这个接口。
 * 注意：该接口在项目中只可以被实现一次。
 *
 * @author mashuai
 * @ClassName: IMsGetDict
 */
@MsExegesis("由于每个项目中，使用的字典处理方式都不一致，凡是用到字典映射的都需要去实现这个接口。注意：该接口在项目中只可以被实现一次。")
public interface IMsGetDict {
    /**
     * 模拟查出的字典值-根据自己项目的业务来实现，并且处理需要的格式
     * <p>
     * 1.根据字典类型集合一次性找出所有需要处理字典值数据的逻辑  select *from [字典表] [类型] in (dictTypeList)
     * 2.假设查询处理是dictList集合,对其以dictType分组，dictList.stream().collect(Collectors.groupingBy(HandleSysDictDto::getDictType));..
     *
     * @param dictTypeList 字段的type类型集合，一次性查询出所有需要的字典。这c里具体方法自行实现，推荐把字典加入redis
     * @return key=字典类型，value=字典集合
     * @author mashuai
     */

    Map<String, List<MsDictDto>> getDictData(List<String> dictTypeList);
}
